Sine and cosine wave generators are currently used in number of different applications. For example, sine and cosine wave generators are typically used in communications systems to provide a sine or cosine carrier wave to modulate or demodulate a signal. Sine/cosine generators are also frequently used in system analysis to generate sine and/or cosine waves which are injected into a system to determining the AC characteristics of the system. For example, sine/cosine wave generators are typically employed in a disc drive system to determine the open and closed loop responses of the disc drive servo system. Sine/cosine wave generators may be implemented in either analog or digital circuits. Additionally, sine/cosine generators may be implemented by discrete circuits or by microprocessors.
Discrete analog sine/cosine generators may involve using logarithmic op-amps or other non-linear forms of signal integration to produce a sine or cosine wave. While these circuits are generally inexpensive, sine waves generated in this manner generally have a noticeable amount of distortion. Discrete digital sine/cosine generators may use digital to analog converters to generate a sine wave. For example, sine/cosine wave generators using multiplexers or counters (and sometimes both) are well known. Typically, these types of sine/cosine generators of are unsuitable in smaller applications where reduced circuit size and low cost is desirable or necessary.
A number of programmable sine/cosine wave generators have been devised. Typically, systems of this type generate a number discrete points in digital form by a microprocessor or an array processor. These points are then converted to an analog sine/cosine wave by a digital-to-analog converter circuit. The programming for this type of sine/cosine generator is generally implemented in either software or micro-code. Because of the software based nature of such generators and the time required for the code to execute, the process often does not operate fast enough for real time applications. Consequently, those prior art systems often use a memory to store a pre-generated representation of a sine wave, and the data stored in the memory then is clocked out to a digital-to-analog converter at a prescribed rate. If a low distortion sine wave is desired then a substantial amount of non-volatile memory must be provided for storing enough data points (particularly at higher frequencies). As non-volatile memory may greatly increase the cost of a given system, these types of sine/cosine generators are unsuitable in smaller applications where reduced circuit size and low cost is desirable or necessary.
Accordingly there is a need for a non-table derived microprocessor implemented sine/cosine generator.